import warnings
warnings.filterwarnings('ignore', category=DeprecationWarning)
from PyQt5 import QtCore,QtGui,QtWidgets
from PyQt5.QtWidgets import  QMessageBox
# 模块导入
from database import usedb
from DPmain_logic import dp_window
from login import Ui_login_MainWindow
class login_window(Ui_login_MainWindow):
    def __init__(self):
        super(login_window, self).__init__()
        self.setupUi(self)
        #固定窗口大小
        self.setFixedSize(400, 300)
        # 只显示关闭按钮
        self.setWindowFlags(QtCore.Qt.WindowCloseButtonHint)
        self.ledit_user.setCursorPosition(0)
        self.ledit_user.setPlaceholderText("请输入用户名")
        # 设置密码单行文本框输入内容为字母数字下划线
        self.ledit_password.setEchoMode(QtWidgets.QLineEdit.PasswordEchoOnEdit)
        from PyQt5.QtCore import QRegExp
        self.ledit_password.setValidator(QtGui.QRegExpValidator(QRegExp("[a-zA-Z0-9-_]+")))
        # 设置密码单行文本框输入内容为字母数字下划线
        self.ledit_password.setCursorPosition(0)
        self.ledit_password.setObjectName("ledit_password")
        self.ledit_password.setPlaceholderText("字母数字下划线")
        self.rbtn_adm.setChecked(True)
        self.setStyleSheet("""
                    QMainWindow {
                        background-color: white; /* 设置背景色为白色 */
                        border:none
                    }
                    
                    QLineEdit {
                        color: gray; /* 设置默认文字颜色为灰色 */
                        border: 1px solid #298DFF;
                        border-radius: 5px;
                    }

                    QLineEdit:focus {/* 鼠标悬浮在QLineEdit时的状态 */
                        color: black; /* 设置默认文字颜色为灰色 */
                        selection-background-color: #298DFF;
                        selection-color: #F2F2F2;
                        background-color: silver; /* 当输入框获得焦点时，背景颜色变为银色 */
                        font-size: 16px;
                    }
                    
                    QGroupBox{
                    border:none;
                    }
                    
                    QRadioButton{
                    /* 字体 */  
                    font:normal 14px; 
                    }
                    
                    QRadioButton:hover{
                    border-style:inset;/*改变边框风格*/
                    padding-left:4px;
                    padding-top:2px;
                    }
                    
                    QRadioButton:hover{
                    border-style:inset;/*改变边框风格*/
                    padding-left:4px;
                    padding-top:2px;
                    }
                    
                    QRadioButton:checked{
                    color:#298DFF;
                    }
                    
                    QPushButton {  
                    /* 边框风格 */  
                    border-style:outset;  
                    /* 边框宽度 */  
                    border-width:1px;  
                    /* 边框颜色 */  
                    border-color:silver;  
                    /* 边框倒角 */  
                    border-radius:10px;  
                    } 
                    
                    #pbtn_login{
                    background-color:orange;
                    opacity: 100;
                    }
                    
                    #pbtn_quit{
                    background-color:gray;
                    opacity: 100;
                    }

                    /*鼠标悬浮时的效果*/
                    QPushButton:hover
                    {
                        border-style:inset;/*改变边框风格*/
                        padding-left:4px;
                        padding-top:2px;
                    }

                    
                    """)
        #显示登录窗口
        self.show()
        # 添加信号槽,点击登录按钮执行登录操作
        self.pbtn_login.clicked.connect(self.openMain)
        # 添加信号槽,点击取消按钮执行退出程序
        self.pbtn_quit.clicked.connect(self.close)

    def openMain(self):
        # 登录窗口的信息赋给全局变量
        usedb.cur_username = self.ledit_user.text()
        usedb.password = self.ledit_password.text()
        usedb.ifadmin = int(self.rbtn_adm.isChecked())
        usedb.cur_username="admin"
        usedb.password="666666"
        usedb.ifadmin=1
        # 数据库初始化
        # 创建user表
        sql1 = '''create table user
                (id int primary key not null,
                user text not null,
                password text not null,
                ifadmin int not null)
                '''
        # 创建超级管理员admin
        sql2 = '''insert into user (id,user,password,ifadmin) values (1,"admin","666666",1)'''
        # 创建projinfo表
        sql3 = '''create table projinfo
        (id int primary key not null,
        proj text not null,
        newdate text not null,
        qualified int not null default 0,
        unqualified int not null default 0,
        total int not null default 0,
        path text not null default 'C:\' )
        '''
        values = ""
        usedb.exec(sql1, values)
        usedb.exec(sql2, values)
        usedb.exec(sql3, values)
        # 将登录窗口的信息同数据库进行比对，输出相关信息，完成登录。
        if usedb.cur_username != "" and usedb.password != "":
            # 从数据库中查询用户信息，判断该用户是否存在及用户性质
            result = usedb.query("select * from user where user= ? and password = ? and ifadmin = ?",
                                 usedb.cur_username,
                                 usedb.password, usedb.ifadmin)
            # 分为超级管理员，管理员和普通用户
            if (usedb.cur_username == "admin" and usedb.password == "666666" and usedb.ifadmin  == 1) or len(result) > 0:
                if result[0][3] == 1:
                    QMessageBox.information(None, "提示", "您是管理员。您将拥有所有权限", QMessageBox.Ok)
                elif result[0][3] == 0:
                    QMessageBox.information(None, "提示", "您是普通用户。您只拥有查看的权限", QMessageBox.Ok)
                self.close()
                self.dpwin= dp_window()  # 创建DPmain窗体对象
                # 显示当前登录用户和登录时间
                datetime = QtCore.QDateTime.currentDateTime()  # 获取当前日期时间
                time = datetime.toString("yyyy-MM-dd HH:mm:ss")  # 对日期时间格式化
                # 在状态栏中显示登录用户+日期时间+版权信息
                self.dpwin.statusBar.showMessage("当前登录用户:" + usedb.cur_username, 0)
                # 将主窗口移到左侧下方1/8位置
                from PyQt5.QtWidgets import QDesktopWidget
                screen = QDesktopWidget().screenGeometry()
                width = screen.width()
                height = screen.height()
                self.dpwin.move(int(width / 8), int(height / 4))
                self.dpwin.show()
            else:
                QMessageBox.warning(None, "警告", "输入的用户不存在，请联系管理员", QMessageBox.Ok)
        else:
            QMessageBox.warning(None, "警告", "请输入正确的用户名和密码", QMessageBox.Ok)


